"""
内置高阶函数
"""
from day07.Employee import Employee

list_employees = [
    Employee(1001,9001,"唐僧",60000),
    Employee(1002,9002,"孙悟空",50000),
    Employee(1003,9002,"猪八戒",40000),
    Employee(1004,9001,"沙僧",30000),
    Employee(1005,9001,"小白龙",15000000),
]

# 获取工资最高的员工， max
# 语法  max(可迭代对象，key = 函数)：根据函数获取可迭代对象的最大值。
emp01 = max(list_employees,key=lambda emp: emp.money)
# print(emp01)

# 获取工资最低的员工， min
# min(可迭代对象，key = 函数)：根据函数获取可迭代对象的最小值。
emp02 = min(list_employees,key=lambda emp:emp.money)
# print(emp02)


# 获取员工中工资大于45000的员工
#  ﬁlter(函数，可迭代对象)：根据条件筛选可迭代对象中的元素，返回值为新可迭代对象。
emp03 = filter(lambda item:item.money > 45000,list_employees)
# print(list(emp03))
# for item in emp03:
#     print(item)


# 打印每一个员工的姓名
#  map（函数，可迭代对象）：使用可迭代对象中的每个元素调用函数，将返回值作为新可迭代对象
# 元素；返回值为新可迭代对象。、
emp04 = map(lambda item:item.name,list_employees)
# print(list(emp04))
# for item in emp04:
#     print(item)

# 按照工资升序
# sorted(可迭代对象，key = 函数,reverse = bool值)：排序，返回值为排序结果。
# reverse 的取值默认是False， 当是False的时候是升序，True的时候降序
emp05 = sorted(list_employees,key=lambda item:item.money)
for item in emp05:
    print(item)
print("===============")

# 按照工资降序
emp06 = sorted(list_employees,key=lambda item:item.money,reverse=True)
for item in emp06:
    print(item)
